package org.jeecg.modules.act.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.act.dto.SignUp;
import org.jeecg.modules.act.dto.Verify;
import org.jeecg.modules.act.entity.Activity;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.act.dto.WxAct;
import org.jeecg.modules.act.vo.ActivityVo;

import java.util.List;

/**
 * @Description: 活动表
 * @Author: jeecg-boot
 * @Date: 2019-09-04
 * @Version: V1.0
 */
public interface IActivityService extends IService<Activity> {

    /**
     * 添加活动
     *
     * @param act
     * @return
     */
    Result addAct(WxAct act);

    /**
     * 活动详情
     *
     * @param actId
     * @return
     */
    Result detail(String actId, String userId);

    /**
     * 报名
     *
     * @param signUps
     * @param userId
     * @param actId
     * @param shareId
     * @param type
     * @return
     */
    Result signUp(List<SignUp> signUps, String userId, String actId, String shareId, Integer type);

    /**
     * 参加活动的人数
     *
     * @param actId
     * @return
     */
    Result actUsers(String actId, Integer orderType);

    /**
     * 活动审核
     *
     * @param verify
     * @return
     */
    Result verify(Verify verify);

    /**
     * 分页查数据
     *
     * @param page
     * @param userId
     * @return
     */
    IPage<ActivityVo> findByPage(IPage<ActivityVo> page, String userId);

    /**
     * 去活动编辑页数据
     *
     * @param actId
     * @return
     */
    Result goEditActivity(String actId);

    /**
     * 修改活动
     *
     * @param act
     * @param actId
     * @return
     */
    Result editActivity(WxAct act, String actId);

    /**
     * 我参加的活动
     *
     * @param userId
     * @return
     */
    IPage<ActivityVo> myJoinRecord(String userId, IPage<ActivityVo> page);

    /**
     * 保存或者修改formId
     *
     * @param formId
     * @param actId
     * @param userId
     * @return
     */
    Result saveOrUpdateFormId(String formId, String actId, String userId, String openId);

    /**
     * 所有正在进行的活动
     *
     * @param page
     * @return
     */
    IPage<ActivityVo> allActivities(Page<ActivityVo> page);
}
